package com.liuugoqing.structural.combination;

/**
 *     我们在访问别的一些管理系统时，经常可以看到类似的菜单。一个菜单可以包含菜单项（菜单项是指不再包含
 * 其他内容的菜单条目），也可以包含带有其他菜单项的菜单，因此使用组合模式描述菜单就很恰当，我们的需求是
 * 针对一个菜单，打印出其包含的所有菜单以及菜单项的名称
 * @Author : liugq
 * @Date : 2022/7/5 16:19
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public class TestCombination {
    public static void main(String[] args) {
        //创建二级菜单
        MenuComponent menuItem1 = new Menu("菜单管理", 2);
        menuItem1.add(new MenuItem("页面访问",3));
        menuItem1.add(new MenuItem("展开菜单",3));
        menuItem1.add(new MenuItem("编辑菜单",3));
        //创建二级菜单
        MenuComponent menuItem2 = new Menu("权限配置", 2);
        menuItem2.add(new MenuItem("页面访问",3));
        //创建一级菜单
        MenuComponent menuItem = new Menu("系统管理",1);
        menuItem.add(menuItem1);
        menuItem.add(menuItem2);
        //打印一级菜单
        menuItem.print();
    }
}
